package com.up.interview.dataStructuresAndAlgorithms;

import com.up.interview.dataStructuresAndAlgorithms.dataS.TreeNode;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author: liuchengjun
 * @title: BFS
 * @projectName: 海联技术中台V2.0
 * @depart 软件事业部
 * @description:
 * @date: 2025/10/23/周四 15:41 (星期四)
 * @since V2.0
 */
public class BFS {

    /**
     * 树结构:
     *        1
     *       / \
     *      2   3
     *     / \
     *    4   5
     *
     *
     * BFS遍历（层序）:
     * 第1层: 1
     * 第2层: 2, 3
     * 第3层: 4, 5
     * 顺序: 1, 2, 3, 4, 5
     * @param root
     */
    void bfs(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            System.out.print(node.getVal());

            if (node.getLeft() != null) queue.offer(node.getLeft());
            if (node.getRight() != null) queue.offer(node.getRight());
        }
    }
}
